#pragma once

#include <iostream>
#include <string>



enum Example:unsigned char
{
	A=2,B,C
};



class Logger
{

public: 
	enum LogLevel
	{
		 INFO = 2,
		 WARN = 1,
		 ERROR = 0,
	}; 
private:
	LogLevel m_LogLevel = INFO;

public:
	Logger();
	~Logger();

	void SetLevel(LogLevel);
	void Error(const char*);
	void Info(const char*);
	void Warn(const char*);

};

Logger::Logger() {}
Logger::~Logger() {}

inline
void Logger::SetLevel(LogLevel level)
{
	m_LogLevel = level;
}

inline
void Logger::Error(const char* message)
{
	if (m_LogLevel >= ERROR)
		std::cout << "[ERROR]:" << message << std::endl;
}
inline
void Logger::Info(const char* message)
{
	if (m_LogLevel >= WARN)
		std::cout << "[INFO]:" << message << std::endl;
}

inline
void Logger::Warn(const char* message)
{
	if (m_LogLevel >= INFO)
		std::cout << "[WARNNING]:" << message << std::endl;
}




int RunExample024()
{
	Logger logger;
	logger.SetLevel(Logger::ERROR);

	logger.Info("info");
	logger.Warn("warnning");
	logger.Error("error");

	
}